home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993 April: Penguin on DISC / ADC Developer CD (1993-04) (''Penguin On DISC'')_iso / Dev.CD Apr 93.iso / Utilities / MPW Interfaces 7.1 Beta / PInterfaces / OSUtils.p < prev    next >
Encoding:
Text File  |  1992-08-28  |  8.8 KB  |  381 lines  |  [TEXT/MPS ]

  1.  
  2. {
  3. Created: Sunday, September 15, 1991 at 11:53 PM
  4.  OSUtils.p
  5.  Pascal Interface to the Macintosh Libraries
  6.  
  7.   Copyright Apple Computer, Inc. 1985-1991
  8.   All rights reserved
  9. }
  10.  
  11.  
  12. {$IFC UNDEFINED UsingIncludes}
  13. {$SETC UsingIncludes := 0}
  14. {$ENDC}
  15.  
  16. {$IFC NOT UsingIncludes}
  17.  UNIT OSUtils;
  18.  INTERFACE
  19. {$ENDC}
  20.  
  21. {$IFC UNDEFINED UsingOSUtils}
  22. {$SETC UsingOSUtils := 1}
  23.  
  24. {$I+}
  25. {$SETC OSUtilsIncludes := UsingIncludes}
  26. {$SETC UsingIncludes := 1}
  27. {$IFC UNDEFINED UsingTypes}
  28. {$I $$Shell(PInterfaces)Types.p}
  29. {$ENDC}
  30. {$SETC UsingIncludes := OSUtilsIncludes}
  31.  
  32. CONST
  33. useFree = 0;
  34. useATalk = 1;
  35. useAsync = 2;
  36. useExtClk = 3;                    {Externally clocked}
  37. useMIDI = 4;
  38.  
  39. {*** Environs Equates ***}
  40. curSysEnvVers = 2;                {Updated to equal latest SysEnvirons version}
  41.  
  42. { Machine Types }
  43. envMac = -1;
  44. envXL = -2;
  45. envMachUnknown = 0;
  46. env512KE = 1;
  47. envMacPlus = 2;
  48. envSE = 3;
  49. envMacII = 4;
  50. envMacIIx = 5;
  51. envMacIIcx = 6;
  52. envSE30 = 7;
  53. envPortable = 8;
  54. envMacIIci = 9;
  55. envMacIIfx = 11;
  56.  
  57. { CPU types }
  58. envCPUUnknown = 0;
  59. env68000 = 1;
  60. env68010 = 2;
  61. env68020 = 3;
  62. env68030 = 4;
  63. env68040 = 5;
  64.  
  65. { Keyboard types }
  66. envUnknownKbd = 0;
  67. envMacKbd = 1;
  68. envMacAndPad = 2;
  69. envMacPlusKbd = 3;
  70. envAExtendKbd = 4;
  71. envStandADBKbd = 5;
  72. envPrtblADBKbd = 6;
  73. envPrtblISOKbd = 7;
  74. envStdISOADBKbd = 8;
  75. envExtISOADBKbd = 9;
  76. false32b = 0;                    {24 bit addressing error}
  77. true32b = 1;                    {32 bit addressing error}
  78.  
  79. { result types for RelString Call }
  80. sortsBefore = -1;                {first string < second string}
  81. sortsEqual = 0;                    {first string = second string}
  82. sortsAfter = 1;                    {first string > second string}
  83.  
  84. TYPE
  85. QTypes = (dummyType,vType,ioQType,drvQType,evType,fsQType,sIQType,dtQType);
  86.  
  87. TrapType = (OSTrap,ToolTrap);
  88.  
  89. ParamBlkType = (IOParam,FileParam,VolumeParam,CntrlParam,SlotDevParam,MultiDevParam,
  90.  AccessParam,ObjParam,CopyParam,WDParam,FIDParam,CSParam,ForeignPrivParam);
  91.  
  92.  
  93. SysPPtr = ^SysParmType;
  94. SysParmType = PACKED RECORD
  95.  valid: Byte;
  96.  aTalkA: Byte;
  97.  aTalkB: Byte;
  98.  config: Byte;
  99.  portA: INTEGER;
  100.  portB: INTEGER;
  101.  alarm: LONGINT;
  102.  font: INTEGER;
  103.  kbdPrint: INTEGER;
  104.  volClik: INTEGER;
  105.  misc: INTEGER;
  106.  END;
  107.  
  108. {QElemPtr = ^QElem;}
  109.  
  110. QElemPtr = ^QElem;
  111.  
  112. FInfo = RECORD
  113.  fdType: OSType;                {the type of the file}
  114.  fdCreator: OSType;                {file's creator}
  115.  fdFlags: INTEGER;                {flags ex. hasbundle,invisible,locked, etc.}
  116.  fdLocation: Point;                {file's location in folder}
  117.  fdFldr: INTEGER;                {folder containing file}
  118.  END;
  119.  
  120. VCB = RECORD
  121.  qLink: QElemPtr;
  122.  qType: INTEGER;
  123.  vcbFlags: INTEGER;
  124.  vcbSigWord: INTEGER;
  125.  vcbCrDate: LONGINT;
  126.  vcbLsMod: LONGINT;
  127.  vcbAtrb: INTEGER;
  128.  vcbNmFls: INTEGER;
  129.  vcbVBMSt: INTEGER;
  130.  vcbAllocPtr: INTEGER;
  131.  vcbNmAlBlks: INTEGER;
  132.  vcbAlBlkSiz: LONGINT;
  133.  vcbClpSiz: LONGINT;
  134.  vcbAlBlSt: INTEGER;
  135.  vcbNxtCNID: LONGINT;
  136.  vcbFreeBks: INTEGER;
  137.  vcbVN: Str27;
  138.  vcbDrvNum: INTEGER;
  139.  vcbDRefNum: INTEGER;
  140.  vcbFSID: INTEGER;
  141.  vcbVRefNum: INTEGER;
  142.  vcbMAdr: Ptr;
  143.  vcbBufAdr: Ptr;
  144.  vcbMLen: INTEGER;
  145.  vcbDirIndex: INTEGER;
  146.  vcbDirBlk: INTEGER;
  147.  vcbVolBkUp: LONGINT;
  148.  vcbVSeqNum: INTEGER;
  149.  vcbWrCnt: LONGINT;
  150.  vcbXTClpSiz: LONGINT;
  151.  vcbCTClpSiz: LONGINT;
  152.  vcbNmRtDirs: INTEGER;
  153.  vcbFilCnt: LONGINT;
  154.  vcbDirCnt: LONGINT;
  155.  vcbFndrInfo: ARRAY [1..8] OF LONGINT;
  156.  vcbVCSize: INTEGER;
  157.  vcbVBMCSiz: INTEGER;
  158.  vcbCtlCSiz: INTEGER;
  159.  vcbXTAlBlks: INTEGER;
  160.  vcbCTAlBlks: INTEGER;
  161.  vcbXTRef: INTEGER;
  162.  vcbCTRef: INTEGER;
  163.  vcbCtlBuf: Ptr;
  164.  vcbDirIDM: LONGINT;
  165.  vcbOffsM: INTEGER;
  166.  END;
  167.  
  168. DrvQElPtr = ^DrvQEl;
  169. DrvQEl = RECORD
  170.  qLink: QElemPtr;
  171.  qType: INTEGER;
  172.  dQDrive: INTEGER;
  173.  dQRefNum: INTEGER;
  174.  dQFSID: INTEGER;
  175.  dQDrvSz: INTEGER;
  176.  dQDrvSz2: INTEGER;
  177.  END;
  178.  
  179. ParmBlkPtr = ^ParamBlockRec;
  180. ParamBlockRec = RECORD
  181.  qLink: QElemPtr;
  182.  qType: INTEGER;
  183.  ioTrap: INTEGER;
  184.  ioCmdAddr: Ptr;
  185.  ioCompletion: ProcPtr;
  186.  ioResult: OSErr;
  187.  ioNamePtr: StringPtr;
  188.  ioVRefNum: INTEGER;
  189.  CASE ParamBlkType OF
  190.    IOParam:
  191.   (ioRefNum: INTEGER;
  192.   ioVersNum: SignedByte;
  193.   ioPermssn: SignedByte;
  194.   ioMisc: Ptr;
  195.   ioBuffer: Ptr;
  196.   ioReqCount: LONGINT;
  197.   ioActCount: LONGINT;
  198.   ioPosMode: INTEGER;
  199.   ioPosOffset: LONGINT);
  200.    FileParam:
  201.   (ioFRefNum: INTEGER;
  202.   ioFVersNum: SignedByte;
  203.   filler1: SignedByte;
  204.   ioFDirIndex: INTEGER;
  205.   ioFlAttrib: SignedByte;
  206.   ioFlVersNum: SignedByte;
  207.   ioFlFndrInfo: FInfo;
  208.   ioFlNum: LONGINT;
  209.   ioFlStBlk: INTEGER;
  210.   ioFlLgLen: LONGINT;
  211.   ioFlPyLen: LONGINT;
  212.   ioFlRStBlk: INTEGER;
  213.   ioFlRLgLen: LONGINT;
  214.   ioFlRPyLen: LONGINT;
  215.   ioFlCrDat: LONGINT;
  216.   ioFlMdDat: LONGINT);
  217.    VolumeParam:
  218.   (filler2: LONGINT;
  219.   ioVolIndex: INTEGER;
  220.   ioVCrDate: LONGINT;
  221.   ioVLsBkUp: LONGINT;
  222.   ioVAtrb: INTEGER;
  223.   ioVNmFls: INTEGER;
  224.   ioVDirSt: INTEGER;
  225.   ioVBlLn: INTEGER;
  226.   ioVNmAlBlks: INTEGER;
  227.   ioVAlBlkSiz: LONGINT;
  228.   ioVClpSiz: LONGINT;
  229.   ioAlBlSt: INTEGER;
  230.   ioVNxtFNum: LONGINT;
  231.   ioVFrBlk: INTEGER);
  232.    CntrlParam:
  233.   (ioCRefNum: INTEGER;
  234.   csCode: INTEGER;
  235.   csParam: ARRAY [0..10] OF INTEGER);
  236.    SlotDevParam:
  237.   (filler3: LONGINT;
  238.   ioMix: Ptr;
  239.   ioFlags: INTEGER;
  240.   ioSlot: SignedByte;
  241.   ioID: SignedByte);
  242.    MultiDevParam:
  243.   (filler4: LONGINT;
  244.   ioMMix: Ptr;
  245.   ioMFlags: INTEGER;
  246.   ioSEBlkPtr: Ptr);
  247.  END;
  248.  
  249. EvQElPtr = ^EvQEl;
  250. EvQEl = RECORD
  251.  qLink: QElemPtr;
  252.  qType: INTEGER;
  253.  evtQWhat: INTEGER;                {this part is identical to the EventRecord as...}
  254.  evtQMessage: LONGINT;            {defined in ToolIntf}
  255.  evtQWhen: LONGINT;
  256.  evtQWhere: Point;
  257.  evtQModifiers: INTEGER;
  258.  END;
  259.  
  260. VBLTask = RECORD
  261.  qLink: QElemPtr;
  262.  qType: INTEGER;
  263.  vblAddr: ProcPtr;
  264.  vblCount: INTEGER;
  265.  vblPhase: INTEGER;
  266.  END;
  267.  
  268. DeferredTask = RECORD
  269.  qLink: QElemPtr;                {next queue entry}
  270.  qType: INTEGER;                {queue type}
  271.  dtFlags: INTEGER;                {reserved}
  272.  dtAddr: ProcPtr;                {pointer to task}
  273.  dtParm: LONGINT;                {optional parameter}
  274.  dtReserved: LONGINT;            {reserved--should be 0}
  275.  END;
  276.  
  277. QElem = RECORD
  278.  CASE QTypes OF
  279.    dtQType:
  280.   (dtQElem: DeferredTask);        {deferred}
  281.    vType:
  282.   (vblQElem: VBLTask);            {vertical blanking}
  283.    ioQType:
  284.   (ioQElem: ParamBlockRec);        {I/O parameter block}
  285.    drvQType:
  286.   (drvQElem: DrvQEl);            {drive}
  287.    evType:
  288.   (evQElem: EvQEl);                {event}
  289.    fsQType:
  290.   (vcbQElem: VCB);                {volume control block}
  291.  END;
  292.  
  293. QHdrPtr = ^QHdr;
  294. QHdr = RECORD
  295.  qFlags: INTEGER;
  296.  qHead: QElemPtr;
  297.  qTail: QElemPtr;
  298.  END;
  299.  
  300. DateTimeRec = RECORD
  301.  year: INTEGER;
  302.  month: INTEGER;
  303.  day: INTEGER;
  304.  hour: INTEGER;
  305.  minute: INTEGER;
  306.  second: INTEGER;
  307.  dayOfWeek: INTEGER;
  308.  END;
  309.  
  310. SysEnvRec = RECORD
  311.  environsVersion: INTEGER;
  312.  machineType: INTEGER;
  313.  systemVersion: INTEGER;
  314.  processor: INTEGER;
  315.  hasFPU: BOOLEAN;
  316.  hasColorQD: BOOLEAN;
  317.  keyBoardType: INTEGER;
  318.  atDrvrVersNum: INTEGER;
  319.  sysVRefNum: INTEGER;
  320.  END;
  321.  
  322.  
  323. FUNCTION GetSysPPtr: SysPPtr;
  324.  INLINE $2EBC,$0000,$01F8;
  325. PROCEDURE SysBeep(duration: INTEGER);
  326.  INLINE $A9C8;
  327. FUNCTION KeyTrans(transData: Ptr;keycode: INTEGER;VAR state: LONGINT): LONGINT;
  328.  INLINE $A9C3;
  329. FUNCTION DTInstall(dtTaskPtr: QElemPtr): OSErr;
  330. FUNCTION GetMMUMode: SignedByte;
  331. PROCEDURE SwapMMUMode(VAR mode: SignedByte);
  332. FUNCTION SysEnvirons(versionRequested: INTEGER;VAR theWorld: SysEnvRec): OSErr;
  333. FUNCTION ReadDateTime(VAR time: LONGINT): OSErr;
  334. PROCEDURE GetDateTime(VAR secs: LONGINT);
  335. FUNCTION SetDateTime(time: LONGINT): OSErr;
  336. PROCEDURE SetTime(d: DateTimeRec);
  337. PROCEDURE GetTime(VAR d: DateTimeRec);
  338. PROCEDURE Date2Secs(d: DateTimeRec;VAR secs: LONGINT);
  339. PROCEDURE Secs2Date(secs: LONGINT;VAR d: DateTimeRec);
  340. PROCEDURE Delay(numTicks: LONGINT;VAR finalTicks: LONGINT);
  341. FUNCTION GetTrapAddress(trapNum: INTEGER): LONGINT;
  342. PROCEDURE SetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  343. FUNCTION NGetTrapAddress(trapNum: INTEGER;tTyp: TrapType): LONGINT;
  344. PROCEDURE NSetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER;tTyp: TrapType);
  345. FUNCTION GetOSTrapAddress(trapNum: INTEGER): LONGINT;
  346. PROCEDURE SetOSTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  347. FUNCTION GetToolTrapAddress(trapNum: INTEGER): LONGINT;
  348. PROCEDURE SetToolTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  349. FUNCTION GetToolboxTrapAddress(trapNum: INTEGER): LONGINT;
  350. PROCEDURE SetToolboxTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  351. FUNCTION WriteParam: OSErr;
  352. FUNCTION EqualString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): BOOLEAN;
  353. PROCEDURE UprString(VAR theString: Str255;diacSens: BOOLEAN);
  354. PROCEDURE Enqueue(qElement: QElemPtr;qHeader: QHdrPtr);
  355. FUNCTION Dequeue(qElement: QElemPtr;qHeader: QHdrPtr): OSErr;
  356. FUNCTION SetCurrentA5: LONGINT;
  357.  INLINE $2E8D,$2A78,$0904;
  358. FUNCTION SetA5(newA5: LONGINT): LONGINT;
  359.  INLINE $2F4D,$0004,$2A5F;
  360. PROCEDURE Environs(VAR rom: INTEGER;VAR machine: INTEGER);
  361. FUNCTION RelString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): INTEGER;
  362. FUNCTION HandToHand(VAR theHndl: Handle): OSErr;
  363. FUNCTION PtrToXHand(srcPtr: Ptr;dstHndl: Handle;size: LONGINT): OSErr;
  364. FUNCTION PtrToHand(srcPtr: Ptr;VAR dstHndl: Handle;size: LONGINT): OSErr;
  365. FUNCTION HandAndHand(hand1: Handle;hand2: Handle): OSErr;
  366. FUNCTION PtrAndHand(ptr1: Ptr;hand2: Handle;size: LONGINT): OSErr;
  367. FUNCTION InitUtil: OSErr;
  368.  INLINE $A03F,$3E80;
  369. FUNCTION SwapInstructionCache(cacheEnable: BOOLEAN): BOOLEAN;
  370. PROCEDURE FlushInstructionCache;
  371. FUNCTION SwapDataCache(cacheEnable: BOOLEAN): BOOLEAN;
  372. PROCEDURE FlushDataCache;
  373.  
  374.  
  375. {$ENDC} { UsingOSUtils }
  376.  
  377. {$IFC NOT UsingIncludes}
  378.  END.
  379. {$ENDC}
  380.  
  381.